//成员变量的偏移量（距离结构体首地址的长度）要保证是此变量大小的整数倍，如果不够则补空位;
//选出所有成员变量中长度最长的变量的值，此时要保证总和是此变量长度的整数倍。如果不是则在最后面补空位。
#include <stdio.h>

int main()
{
    struct A
        {
            int a; //占4字节
            char b; //占1字节; 偏移量4是长度1的整数倍，故不补空位
            short c; //占2字节; 偏移量1+4=5不是长度2的整数倍，故补1个空位
        }; //长度最长成员为int，占4字节; 此时结构体总长度4+1+2+1=8是4的整数倍，故不在末尾补空位
    struct B
        {
            char b; //占1字节
            int a; //占4字节; 偏移量1不是长度4的整数倍，故补3个空位
            short c; //占2字节; 偏移量1+4+3=8是长度2的整数倍，故不补空位
        }; // 长度最长成员为int，占4字节; 此时结构体总长度1+4+3+2=10不是4的整数倍，故在末尾补2个空位
    printf("A:%d\nB:%d", sizeof(struct A), sizeof(struct B));
}
